﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Dlls;
using Persistencia;
using UI.Views.Consultas;
using DexGerencial;

namespace UI.Views.Cadastros
{
    /// <summary>
    /// Interaction logic for frmCadastroUsuario.xaml
    /// </summary>
    public partial class frmCadastroUsuario : Window
    {
        private const int cAdministrador = 1;
        private const int cGerentes = 2;
        private const int cOperador = 3;
        private UsuarioDLL usuarioDll;
        private PessoasDLL pessoasDll;
        private Usuario usuario;
        private int codigoAlterarOuDeletar;
        private Funcionario funcionario;
        private FuncionarioDLL funcionarioDll;
        public frmCadastroUsuario( )
        {
            InitializeComponent();
            usuarioDll = new UsuarioDLL();
            pessoasDll = new PessoasDLL();
            funcionarioDll = new FuncionarioDLL();
            txtDaTaCadastro.Text = DateTime.Now.Date.ToShortDateString() ;
        }

        private void InserOrUpdate(object sender, RoutedEventArgs e)
        {
            try
            {

            Usuario usuario = new Usuario();
            usuario.CodigoPessoa = int.Parse(txtCodPessoa.Text);
            txtNomePessoa.Text = Convert.ToString(pessoasDll.getPessoa(int.Parse(txtCodPessoa.Text.ToString())));
            usuario.Nome = txtUsuario.Text;
            string hashSenha = Utils.EncryptMd5(txtUsuario.Text.ToString(),txtSenha.ToString());
            usuario.senha = hashSenha;
            usuario.DataCadastro = Convert.ToDateTime(txtDaTaCadastro.Text);
            usuario.Perfil = int.Parse(cbxPerfil.SelectedIndex.ToString());
            usuarioDll.Insert(usuario);
            MessageBox.Show("Usuario cadastrado com sucesso!");
            reset(0, this);

            }
            catch (Exception)
            {

                MessageBox.Show("Registro não pode ser gravado");
            }
        }

        private void BuscarPessoa(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                
                if (txtCodPessoa.Text=="")
                {
                    frmConsultaPadrao consultaPadrao = new frmConsultaPadrao("Funcionarios");
                    consultaPadrao.Show();

                }
                else if (txtCodPessoa.Text != "")
                {
                    Funcionario funcionario = funcionarioDll.getFuncionario(int.Parse(txtCodPessoa.Text));
                    if (funcionario != null)
                    {
                        txtNomePessoa.Text = funcionario.Nome.ToString(); 
                    }
                    else
                    {
                        MessageBox.Show("Não existe funcionario(a) , com o numero informado ");
                    }                    
                }
            }
        }

        private static void reset(int depth, DependencyObject obj)
        {
            // Percorre todos os filhos do objeto visual.
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
                reset(depth + 1, VisualTreeHelper.GetChild(obj, i));

            // Se for um TextBox, limpa.
            if (obj is TextBox)
                ((TextBox)obj).Text = string.Empty;
            if (obj is ComboBox)
                ((ComboBox)obj).Text = string.Empty;
        }
    }
}
